
package threads;

import componentes.Configuracao;
import componentes.Mascaramento;
import excessoes.LloginNuloException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import principal.Main;

/**
 *
 * @author Wagner Tavares
 */
public class ConsultaMascaramentos extends Consulta{
    private HashMap<String,Mascaramento> mascaramentos;
    private Thread consultaMascaramentosThread;
    public ConsultaMascaramentos(Configuracao config, HashMap<String,Mascaramento> mascaramentos) throws LloginNuloException{
        super(config);
        this.mascaramentos = mascaramentos;
        String llogin = "";
        if(config.getLlogin().contains(",")){
            String [] logins = config.getLlogin().split(",");
            for(int i = 0 ; i < logins.length ; i++){
                llogin = llogin.concat("`codigoParceiro` = '"+logins[i]+"' ");
                if( i < (logins.length-1) )
                    llogin = llogin.concat("or ");
            }
        }else{
            llogin = "`codigoParceiro` = '"+config.getLlogin()+"' ";
        }
        query = "SELECT `faixa`,`ip` " +
                    "FROM `tblink` " +
                    "WHERE ( "+llogin+" )";
    }
    @Override
    public void run() {
        HashMap<String,Mascaramento> consultaMascaramento = new HashMap<String,Mascaramento>();
        ResultSet resultado = consultaBanco(query);
        try {
            if (resultado.first()) {
                do{
                    String faixa = resultado.getString("faixa"), ip = resultado.getString("ip");
                    consultaMascaramento.put(faixa, new Mascaramento(faixa,ip));
                } while(resultado.next());
            } else {
                consultaMascaramento=null;
            }
        } catch (SQLException ex) {
            Logger.getLogger(Main.class.getName()).logp(Level.SEVERE, "Servidor", "autoPreencheMascaramento()"," Erro ao manipular resultados da consulta no banco de dados");
        }
        //if(mascaramentos==null)
        //   mascaramentos = new HashMap<String,Mascaramento>();
        if(!mascaramentos.isEmpty())
            mascaramentos.clear();
        if(consultaMascaramento!=null && !consultaMascaramento.isEmpty()){
            mascaramentos.putAll(consultaMascaramento);
        }
    }
    public void start(){
        consultaMascaramentosThread = new Thread(this,"ConsultaMascaramentos");
        consultaMascaramentosThread.start();
    }
    public void stop(){
        consultaMascaramentosThread = null;
    }
}
